
//1567.乘积为正数的最长子数组长度
class Solution {
public:
    int getMaxLen(vector<int>& nums) {
        int n = nums.size();

        vector<int> f(n+1) , g(n+1);       //f记录乘积为整数的最长长度 , g记录乘积为负数的最长长度
        for( int i = 1; i < n+1 ;i++)
        {
            if(nums[i-1] > 0) 
            {
                f[i] = f[i-1] + 1;
                g[i] = g[i-1]==0?0:g[i-1] + 1; 
            }
            else if(nums[i-1] < 0)
            {
                f[i] = g[i-1] == 0? 0 : g[i-1] + 1;
                g[i] = f[i-1] + 1; 
            }
        }
        return ranges::max(f);
    }
};